package com.campus.service.impl;

import com.campus.dao.StudentDao;
import com.campus.model.Student;
import com.campus.service.StudentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.jar.JarEntry;

/**
 * @author HLQ
 * @date 2024/11/19 16:16
 */
@Slf4j
@Service
public class StudentServiceImpl implements StudentService {
    @Autowired
    StudentDao studentDao;
    @Autowired
    JdbcTemplate jdbcTemplate;
    @Transactional
    @Override
    public int addStudent(Student student) {
        // 检查学生的login_id是否存在于 t_sys_user 表的 id 中
        String sql1 = "SELECT COUNT(1) FROM t_sys_user WHERE id = ?";
        int userCount = jdbcTemplate.queryForObject(sql1, Integer.class, student.getLoginId());

        // 如果用户未注册
        if (userCount == 0) {
            log.error("用户未注册");
            return 0;
        }

        // 检查学生的login_id是否存在于 t_sys_user_role 表的 user_id 中
        String sql2 = "SELECT COUNT(1) FROM t_sys_user_role WHERE user_id = ?";
        int roleCount = jdbcTemplate.queryForObject(sql2, Integer.class, student.getLoginId());

        // 如果用户未分配角色
        if (roleCount == 0) {
            log.error("用户未分配角色");
            return 0;
        }

        // 检查角色是否为4（学生角色）
        String sql3 = "SELECT role_id FROM t_sys_user_role WHERE user_id = ?";
        Integer roleId = jdbcTemplate.queryForObject(sql3, Integer.class, student.getLoginId());

        // 如果角色不是学生（假设角色 ID 4 对应学生角色）
        if (roleId == null || roleId != 4) {
            log.error("用户角色不是学生");
            return 0;
        }

        // 如果通过所有检查，则调用 studentDao.addStudent() 添加学生
        return studentDao.addStudent(student);
    }

    @Override
    public int batchAddStudent(Student student){
        return 0;
    }
    @Override
    public int checkStudentById(String comment,int id){
        return studentDao.checkStudentById(comment,id);
    }
    @Override
    public int batchCheckStudentById(String comment,int id){
        return 0;
    }
}
